package com.dbms.parser.ast;

import com.dbms.common.Constants;
import com.dbms.common.Position;

/**
 * RevokeNode (收回权限节点) 代表了 `REVOKE` 语句的抽象语法树 (AST) 结构。
 * 它存储了收回权限操作所需的信息：要收回的权限、目标表以及目标用户。
 */
public class RevokeNode extends StatementNode {
    /**
     * 要收回的权限类型，例如 "SELECT", "INSERT"。
     */
    private final String privilege;
    /**
     * 权限作用的目标表的名称。
     */
    private final String tableName;
    /**
     * 被收回权限的用户的名称。
     */
    private final String userName;

    public RevokeNode(Position position, String privilege, String tableName, String userName) {
        super(position);
        this.privilege = privilege;
        this.tableName = tableName;
        this.userName = userName;
    }

    /**
     * 返回语句的类型标识。
     * @return "Revoke" 常量
     */
    @Override
    public String getStatementType() {
        return Constants.STATEMENT_REVOKE;
    }

    /**
     * 获取要收回的权限类型。
     * @return 权限字符串
     */
    public String getPrivilege() {
        return privilege;
    }

    /**
     * 获取目标表名。
     * @return 表名字符串
     */
    public String getTableName() {
        return tableName;
    }

    /**
     * 获取目标用户名。
     * @return 用户名字符串
     */
    public String getUserName() {
        return userName;
    }
}